﻿using System;
using System.Data;
using System.Data.SqlClient;

namespace AccesoDatos.DAO.Base
{

    /// <summary>
    /// Excepción producida cuando se da un error accediendo a la base de datos
    /// </summary>
    public class DAOException : Exception
    {
        /// <summary>
        /// Crea una instancia al objeto
        /// </summary>
        /// <param name="ex">Objeto excepción que trataremos</param>
        public DAOException(Exception ex) : base("Se ha producido un error accediendo a la Base de Datos: " + ex.Message, ex) { }
        /// <summary>
        /// Crea una instancia al objeto
        /// </summary>
        /// <param name="message">Mensaje para mostrar</param>
        /// <param name="ex">Objeto excepción que trataremos</param>
        public DAOException(string message, Exception ex) : base(message, ex) { }
        /// <summary>
        /// Crea una instancia al objeto
        /// </summary>
        /// <param name="message">Mensaje para mostrar</param>
        public DAOException(string message) : base(message) { }
    }

    //TODO: Comprobar la usabilidad de la excepcion de las View
    ///// <summary>
    ///// Excepción producida cuando se da un error creando una vista
    ///// </summary>
    //public class ViewException : Exception
    //{
    //    /// <summary>
    //    /// Crea una instancia al objeto
    //    /// </summary>
    //    /// <param name="ex">Objeto excepción que trataremos</param>
    //    public ViewException(Exception ex) : base("Se ha producido un error creando una vista: " + ex.Message, ex) { }
    //}

    /// <summary>
    /// Excepción producida cuando no se ha definido la cadena ConexionNegocioDB en el Web.config
    /// </summary>
    public class NotDefinedStrConexionIntegraDBException : Exception
    {
        /// <summary>
        /// Crea una Instancia al objeto
        /// </summary>
        public NotDefinedStrConexionIntegraDBException() : base("No se ha definido la cadena ConexionNegocioDB en el Web.Config ") { }
    }

    /// <summary>
    /// Excepcion que generara la factoria al no poder instanciar el objeto DAO que corresponde al DTO 
    /// </summary>
    public class NotDefinedObjetoDTO : Exception 
    {
        /// <summary>
        /// Crea una instancia del objeto
        /// </summary>
        public NotDefinedObjetoDTO() : base("No se ha encontrado el DAO al que hace referencia el ObjetoDTO") { }
    }

}

